/**
 * All rights Reserved, Designed By 林溪
 * Copyright:    Copyright(C) 2016-2030
 */

package com.boots.bloomfilter;

import java.util.List;

import com.google.common.collect.Lists;
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;

/**
 * 布隆过滤器
 * @author：林溪
 * @date：Jan 9, 2021
 */

public class Bloomfilter {

    // 初始化一千万个元素
    private static final Integer count = 10000000;

    // 创建一个数字类型布隆过滤器
    private static final BloomFilter<Integer> bf = BloomFilter.create(Funnels.integerFunnel(), count);

    // 创建一个错误元素的集合
    private static final List<Integer> list = Lists.newArrayList();

    public static void main(String[] args) {
        // 把数据发布到布隆过滤器里面
        for (int i = 0; i < count; i++) {
            bf.put(i);
        }
        // 针对布隆过滤器进行数据概率错误实现,这里的数据为1000个
        for (int i = count + 1000; i < count + 2000; i++) {
            if (bf.mightContain(i)) {
                list.add(i);
            }
        }
        System.out.println(list.size());
    }

}
